package com.citywithincity.db.meta;

import java.util.Collection;

import com.citywithincity.db.meta.impl.DbStruct;

/**
 * 数据库结构
 * @author renxueliang
 *
 */
public interface DbStructFactory {
	
	public static final int STRUCT_USING = 0;
	public static final int STRUCT_ALL = 1;
	
	
	/**
	 * 获取表的注释
	 * @param tableName
	 * @return
	 */
	String getComment(String tableName);
	
	/**
	 * 获取全部表结构 
	 * @param type  全部或者在使用中的
	 * @return
	 */
	Collection<TableStruct> getTableStructs(int type);
	
	/**
	 * 获取数据库的所有
	 * @return
	 */
	DbStruct getDbStruct();
	
	/**
	 * 获取表结构
	 * @param tableName 表名称
	 * @return
	 */
	TableStruct getTableStruct(String tableName);
	
	/**
	 * 获取创建表的语句
	 * @param struct
	 * @return
	 */
	String createTable(TableStruct struct);

	void setDb(int index);

	Collection<TableStruct> query(TableStructFilter filter);
}
